package com.molichuxing.services.infrastructure.service;

import java.util.List;

import com.molichuxing.framework.service.RootService;
import com.molichuxing.services.infrastructure.dto.request.create.OrderMileageCreateDto;
import com.molichuxing.services.infrastructure.dto.request.modify.OrderPayModifyDto;
import com.molichuxing.services.infrastructure.dto.response.OrderMileageDto;
import com.molichuxing.services.property.OrderMileagePayStatusEnum;

/**
 * <p>
 * 加购里程订单 服务类
 * </p>
 *
 * @author renzhengyu
 * @since 2019-08-12
 */
public interface OrderMileageService extends RootService {

	/**
	 * 获取加购里程订单
	 * 
	 * @param masterOrderCode
	 *            主订单号
	 * @return
	 */
	public List<OrderMileageDto> getOrderMileageList(Long masterOrderCode);

	/**
	 * 获取加购里程订单
	 * 
	 * @param masterOrderCode
	 *            主订单号
	 * @param status
	 *            状态
	 * @return
	 */
	public List<OrderMileageDto> getOrderMileageList(Long masterOrderCode, OrderMileagePayStatusEnum status);

	/**
	 * 获取有效加购里程订单（待支付、已支付）
	 * 
	 * @param masterOrderCode
	 *            主订单号
	 * @return
	 */
	public List<OrderMileageDto> getEffectiveOrderMileageList(Long masterOrderCode);

	/**
	 * 新增加购里程订单
	 * 
	 * @param orderMileageCreateDto
	 * @return id
	 */
	public Integer create(OrderMileageCreateDto createDto);

	/**
	 * 获取加购里程信息
	 * 
	 * @param orderCode
	 *            订单号
	 * @return
	 */
	public OrderMileageDto getOrderMileage(Long orderCode);

	/**
	 * 取消加购订单
	 * 
	 * @param orderCode
	 *            订单号
	 * @return
	 */
	public Boolean cancel(Long orderCode);

	/**
	 * 支付完成修改加购订单信息
	 * 
	 * @param modifyDto
	 * @return
	 */
	public Boolean modifyPay(OrderPayModifyDto modifyDto);
}
